iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0
AI & Data

看對話學 Python 資料分析,用情境故事帶你入門系列 第 7

Day-7 想成為資料分析師?熟悉基礎串列 list 運用準沒錯!(下)

  • 分享至 

  • xImage
  •  


串列就好像實體世界的的貨櫃,我們可以在任意調動貨櫃。在程式的世界,我們可以用串列進行資料的移動或選取,是不是跟移動貨櫃很像啊!

Meiko 回家的路上想了一下,整理帳單的時候,想要知道特定時間花了多少錢,常常不是乖乖地從頭到尾觀察,但目前 Jason 還沒跟她講該怎麼做?今天 Meiko 就帶著這樣的問題來找 Jason ...

Meiko:「對了,Jason,如果我想只要看到星期二到星期五花的錢有沒有辦法啊?」

Jason:「星期二到星期五,你如果算它們的位置的話是多少?」

Meiko:「是 2 到 5,阿不是,你有說程式的 index 是從0開始,0 代表weekName裡面的星期一,1 就會是weekName裡面的星期二,所以應該是 1 到 4。」

Jason :「這就對了,還好我沒有白教你。我們原本weekName[i]只取第 i 個元素,現在你試試看用 weekName[開始位置:結束位置],看能不能讓你印出想要看的東西。」

Meiko :「雙面膠比較好用,白膠,普普,好拉,那我試一下,開始位置是 1 ,結束位置是 4 所以應該是 weekName[1:4]

Jason :「你確定是weekName[1:4]嗎?你不要印出來看看?」

weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
print (weekName[1:4])


Meiko:「厚,怎麼會只印到星期四,我想看到星期五,該不會結束位置要設定到第 5 個位置?那我試看看 weekName[1:5]


Meiko:「哈!對了!程式還蠻有趣的,寫錯就再稍微調整一下重跑就好。好像也不費什麼力氣。」

Jason:「對啊,像你這樣的初學者,重點不用怕犯錯,你寫出程式即使有錯,印出來馬上就可以看到錯在哪裡?因為你知道想要看到的結果,自然就會想辦法把那個結果產生出來。,像這邊,你又再一次的練習到 Python 起始點值和終點值的關係,比如說串列的內容[1:5],代表著 Python 會把串列當中,從第 1 個位置開始,到第 4 個位置拿出來,所以下次你只要記得你像看到哪一個元素,就把那個元素的位置再往後加 1 就可以得到正確的位置拉!」

Meiko:「那如果我不小心超過了串列的範圍會發生什麼事?」

Jason :「你放心,Python 程式也會告訴你,你知道現在的weekName幾個元素嗎?」

Meiko:「有 7 個。」

Jason :「Okay,所以如果我們把weekName[7]印出來看看

weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
print (weekName[7])

Meiko:「為什麼它下面出現這個 Index Error: list index out of range ?」

Jason :「list index out of range 代表這個 index 超出了這個串列的範圍,也就是我們設定weekName[7]的話,超出了串列的範圍,所以它就出現 Error 來告訴你這樣母湯!」

Meiko:「歐,這麼聰明,那如果我拿weekName[6]就可以囉?我好像也不用問你,我自己用用看就知道

weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
print (weekName[6])

Meiko:「耶,沒有再出現錯誤訊息了耶!」

Jason:「其實你有另外一個方法,可以取出最後一個位置,你看設定weekName[-1],把裡面的 index 換成 -1,也可以取出最後一個數值:星期日

weekName=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
print (weekName[-1])

Meiko:「這樣挺方便的,原來在程式裡面要達成目的也有 2 種不同的方向!」

Jason:「對啊,就看你用什麼樣的方式去思考!都可以多嘗試!」

Meiko:「Jason,我還有一個問題,如果我不想要只紀錄一星期花的錢,想要增加另外一個星期的消費,該怎麼辦?」

Jason:「好問題,這樣好了,那你把上星期花的錢,存在另外一個串列給我看」

Meiko:「好,我找一下我的發票明細,我上星期花的錢應該是這樣。」

spendList=[205,350,520,240,330,180,2000]
spendList=[180,250,450,300,220,1000,1500]
print (spendList)

Jason:「誒,你有沒有發現,你連續兩個星期的串列名字設定成同樣的名字?這樣不行拉
你這週是這週的名字,上週要有上週的名字,不然的話,程式就會紀錄最後設定的那一組資料喔」

spendList1=[205,350,520,240,330,180,2000]
spendList2=[180,250,450,300,220,1000,1500]
print (spendList1,spendList2)

Meiko:「歐,是兩個串列要存在不同的變數的意思?」

Jason:「沒錯,有兩個不同串列,spendList1代表你本週每天的消費金額,spendList2代表你上週的消費金額。好了,我們有了你這兩週的消費金額,我們可以把上週的消費金額,綁定在這週的消費金額之後,

spendList1=[205,350,520,240,330,180,2000]
spendList2=[180,250,450,300,220,1000,1500]
spendList1.extend(spendList2)
print (spendList1)

Meiko:「不錯耶,這將就變成一筆資料了,感覺比較合理!可是原理是什麼?」

Jason:「你看,我們這邊在spendList1之後用了.extend()這個函式,並且把spendList2放進去,最後再印出來!就會如上圖最後的結果所示,變成一個擁有 2 周消費紀錄的串列了!」

Meiko:「哇,太神了!這樣我可以直接看一下這兩週是怎麼花錢的,誒,想說這期的信用卡費怎麼這麼高!啊,下週有幾天只能吃茶葉蛋配豆漿了!」

牛刀小試

我大寶寶~拉,今天聊到串列的基本操作透過串列list中 index 的選取不同區間的串列內容,以及.extend()的方式,把兩個不同串列合併,大家可以多試試看,不同的 index,確認自己能夠熟悉串列的基本操作喔!明天就會有練習題讓大家做了!

給大寶寶留言、分享、鼓勵

歡迎登入留言跟我分享你的想法唷!(登入不麻煩,點一下 FB 登入就可以留言了!)

1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.如果前面的內容忘記了,趕快看一下大寶寶這一系列的看對話學 Python 資料分析,用情境故事帶你入門的列表!跟大寶寶一起 Happy Coding 囉!


上一篇
Day-6 想成為資料分析師?熟悉基礎串列 list 運用準沒錯!(上)
下一篇
Day-8 學會串列的進階操作,從生手到上手(上)
系列文
看對話學 Python 資料分析,用情境故事帶你入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言